import { autoUpdater } from 'electron-updater'
import { ipcMain } from 'electron'
import log from 'electron-log'

export default class AppUpdater {
  constructor(mainWindow) {
    this.mainWindow = mainWindow
    
    // 设置日志
    log.transports.file.level = 'debug'
    autoUpdater.logger = log
    
    // 设置更新服务器地址
    autoUpdater.setFeedURL({
      provider: 'generic',
      url: 'https://www.hz-tckj.online'  // 替换为你的更新服务器地址
    })

    // 检查更新错误
    autoUpdater.on('error', (err) => {
      this.sendStatusToWindow('error', err)
    })

    // 检查更新中
    autoUpdater.on('checking-for-update', () => {
      this.sendStatusToWindow('checking')
    })

    // 有可用更新
    autoUpdater.on('update-available', (info) => {
      this.sendStatusToWindow('available', info)
    })

    // 没有可用更新
    autoUpdater.on('update-not-available', (info) => {
      this.sendStatusToWindow('not-available', info)
    })

    // 更新下载进度
    autoUpdater.on('download-progress', (progressObj) => {
      this.sendStatusToWindow('progress', progressObj)
    })

    // 更新下载完成
    autoUpdater.on('update-downloaded', (info) => {
      this.sendStatusToWindow('downloaded', info)
    })

    // 监听来自渲染进程的检查更新请求
    ipcMain.on('check-for-update', () => {
      this.checkForUpdates()
    })

    // 监听来自渲染进程的立即更新请求  
    ipcMain.on('do-update', () => {
      autoUpdater.quitAndInstall()
    })
  }

  // 发送状态到渲染进程
  sendStatusToWindow(status, data) {
    this.mainWindow.webContents.send('update-message', {
      status,
      data
    })
  }

  // 检查更新
  checkForUpdates() {
    autoUpdater.checkForUpdates()
  }
} 